package com.yunhe.tianhe.rentcars.dao.permission;


import com.yunhe.tianhe.commons.dto.Pageable;
import com.yunhe.tianhe.rentcars.entity.permission.Resource;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ResourceDao {

    /**
     * 添加
     * @param resource
     */
    void save(Resource resource);

    /**
     * 删除
     * @param permisId
     */
    void delete(Long permisId);

    /**
     * 修改
     * @param resource
     */
    void update(Resource resource);

    /**
     * 根据id查询权限的详细信息
     * @param permisId
     * @return
     */
    Resource find(Long permisId);

    /**
     * 查所有权限
     * @return
     */
    List<Resource> findAll();

    /**
     * 分页查询
     * @param page
     * @param size
     * @return
     */
    Pageable<Resource> findPage(@Param(value = "page") Integer page, @Param(value="size") Integer size);

    int findCount();

    List<Resource> findList(@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据角色id查角色所有权限
     * @param roleId
     * @return
     */
    List<Resource> findByRole(Long roleId);

    /**
     * 根据类型查询
     * @param type
     * @return
     */
    List<Resource> findByType(Integer type);

    /**
     * 根据父级id查找
     * @param parentId
     * @return
     */
    List<Resource> findByParentId(Long parentId);

    /**
     * 根据用户名查找用户权限
     * @param userId
     * @return
     */
    List<Resource> findPermissionMenu(Long userId);

    /**
     * 查找用户所拥有的所有权限
     * @param userId
     * @return
     */
    List<Resource> allPermission(Long userId);

    /**
     * gen jv juese id cha xun zuo ce cai dan shu
     * @param roleid
     * @param permistype
     * @return
     */
    List<Resource> findResourceMenu(@Param("roleid") long roleid,@Param("permistype") int permistype);
}
